package com.atguigu.gmall.order;


import com.atguigu.gmall.common.interceptor.feign.anntation.EnableFeignHeaderInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.amqp.rabbit.annotation.EnableRabbit;
import org.springframework.boot.SpringApplication;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.transaction.annotation.EnableTransactionManagement;


/**
 * RabbitMQ场景，SpringBoot自动配置了什么
 * 1、 RabbitAutoConfiguration 自动配置开启
 *      1)、导入了 RabbitAnnotationDrivenConfiguration
 *      2)、给容器中放了 RabbitTemplate（操作RabbitMQ收发消息）；
 *      3)、给容器中放了 AmqpAdmin（创建交换机，队列）
 *      4)、CachingConnectionFactory
 * 总结：
 * 1）、自动注入 RabbitTemplate 收发消息；
 * 2）、自动注入 AmqpAdmin 管理RabbitMQ交换机
 * 3）、@EnableRabbit 开启基于注解的RabbitMQ功能
 *      @RabbitListener(queue="haha") //自动监听指定队列的消息
 *
 */



@EnableFeignHeaderInterceptor
@EnableTransactionManagement  //开启事务管理功能
@EnableFeignClients({
        "com.atguigu.gmall.feign.product",
        "com.atguigu.gmall.feign.ware",
        "com.atguigu.gmall.feign.cart"
})
@MapperScan("com.atguigu.gmall.order.mapper")
@SpringCloudApplication
public class OrderMainApplication {

    public static void main(String[] args) {
        SpringApplication.run(OrderMainApplication.class,args);
    }
}
